/*
 * EnviarActivitat.java
 *
 */

package org.wooxes.client;

import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormHandler;
import com.google.gwt.user.client.ui.FormSubmitEvent;
import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.Window;

public class EnviarActivitat extends TransparentDialogBox {
    PopupLoading popup_loading;
    
    public EnviarActivitat(String nomActivitat, int idActivitat) {
        super();
        setText("Adjuntar activitat: "+ nomActivitat);
        
        // Es carrega de bon inici, per a que al enviar surti al moment


        // Creació del formulari
        final FormPanel form = new FormPanel();
        form.setAction("uploadservlet");
        //form.setAction("uploadservlet");
        form.setMethod(FormPanel.METHOD_POST);
        form.setEncoding(FormPanel.ENCODING_MULTIPART);
        
        // Contingut i parts del formulari
        VerticalPanel contingut = new VerticalPanel();
        VerticalPanel vp = new VerticalPanel();
        vp.setWidth("100%");
        vp.setStyleName("EnviarActivitat-Form");

        // ID activitat
        Hidden activitatId = new Hidden("id",Integer.toString(idActivitat));
        
        // UserName
        Label userNameLb = new Label("Nom alumne: (No es comprovarà)");
        final TextBox userName = new TextBox();
        userName.setName("username");
        userName.setVisibleLength(20);
        userName.setMaxLength(60);

        // Arxiu a enviar
        Label uploadLb = new Label("Arxiu: (Amb extensió .zip)");
        final FileUpload upload = new FileUpload();
        upload.setName("file");
        
        // Boto per enviar
        Button submit = new Button("Enviar");
        submit.addStyleDependentName("Tancar");
        submit.addClickListener(new ClickListener(){
            public void onClick(Widget sender){
                form.submit();
            }
        });

        //Boto per tancar
        HorizontalPanel tancarPanel = new HorizontalPanel();
        Button closeButton = new Button("Tanca");
        tancarPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
        tancarPanel.setStyleName("EnviarActivitat-Tancar");
        tancarPanel.add(closeButton);
        
        closeButton.addClickListener(new ClickListener(){
            public void onClick(Widget sender){
                hide();
            }
        });

        form.addFormHandler(new FormHandler(){
            public void onSubmit(FormSubmitEvent event){
                String arxiu = upload.getFilename();
                // Comprovació nom d'usuari
                 
                if(userName.getText().equals("")){
                    Window.alert("Error: Falta nom d'usuari");
                    event.setCancelled(true);
                    return;
                }
                // Comprovació arxiu
                if(arxiu.equals("")){
                    Window.alert("Error: Falta seleccionar arxiu");
                    event.setCancelled(true);
                    return;
                }
                else if(!(arxiu.substring(arxiu.lastIndexOf(".")+1).equals("zip"))){
                    Window.alert("Error: Has de seleccionar un arxiu amb format zip");
                    event.setCancelled(true);
                    return;
                }
                popup_loading = new PopupLoading();
                popup_background.hide();
                popup_loading.show();
                popup_loading.center();
                
            }
            public void onSubmitComplete(FormSubmitCompleteEvent event){
                String resposta = event.getResults();
                popup_loading.hide();
                if (resposta.startsWith("ok")){
                    Window.alert("Enviat correctament");
                    hide();
                }
                else{
                    Window.alert(resposta);
                    // Si no s'oculta completament, la capa transparent tapa el DialogBox
                    hide();
                    show();
                }
                    
            }
            
        });
        
        // S'afegeix tot al vertical panel
        vp.add(activitatId);
        vp.add(userNameLb);
        vp.add(userName);
        vp.add(uploadLb);
        vp.add(upload);
        vp.add(submit);
        vp.setCellHorizontalAlignment(submit,VerticalPanel.ALIGN_CENTER);
        contingut.add(vp);
        contingut.add(tancarPanel);
        
        // S'afegeix al formulari i al dialog
        form.setWidget(contingut);
        setWidget(form);
        this.center();
    }

    private Widget crearImatgeLoading(){
        VerticalPanel vp = new VerticalPanel();
        vp.setStyleName("EnviarActivitat-LoadingPanel");
        vp.setBorderWidth(1);
        
        Label header = new Label(this.getText());
        
        VerticalPanel content = new VerticalPanel();
        Image imageLoading = new Image("images/loading.gif");
        Label txtLoading = new Label("Carregant...");
        txtLoading.setStyleName("padding10");
        
        
        content.add(imageLoading);
        content.add(txtLoading);

        
        vp.setCellHorizontalAlignment(txtLoading, VerticalPanel.ALIGN_CENTER);

        
        return vp;
    }
}
